home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 2000 February / Macworld (2000-02).dmg / Updaters / WhiteCap 3.2.2.sea / WhiteCap 3.2.2 / WhiteCap Source / DrawSprocket 1.1.4 SDK / Interfaces&Libraries / DrawSprocket.h next >
Text File  |  1998-11-24  |  13KB  |  471 lines

  1. /*
  2.      File:        DrawSprocket.h
  3.  
  4.      Contains:    Games Sprockets: DrawSprocket interfaces
  5.  
  6.      Version:    Technology:    Draw Sprocket 1.1.4
  7.                  Release:    DrawSprocket SDK, Use with 3.2 Universal Headers
  8.  
  9.      Copyright:    © 1996-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __DRAWSPROCKET__
  18. #define __DRAWSPROCKET__
  19.  
  20. #ifndef __MACTYPES__
  21. #include <MacTypes.h>
  22. #endif
  23. #ifndef __EVENTS__
  24. #include <Events.h>
  25. #endif
  26. #ifndef __QUICKDRAW__
  27. #include <Quickdraw.h>
  28. #endif
  29. #ifndef __QDOFFSCREEN__
  30. #include <QDOffscreen.h>
  31. #endif
  32. #ifndef __DISPLAYS__
  33. #include <Displays.h>
  34. #endif
  35.  
  36.  
  37.  
  38. #if PRAGMA_ONCE
  39. #pragma once
  40. #endif
  41.  
  42. #ifdef __cplusplus
  43. extern "C" {
  44. #endif
  45.  
  46. #if PRAGMA_IMPORT
  47. #pragma import on
  48. #endif
  49.  
  50. #if PRAGMA_STRUCT_ALIGN
  51.     #pragma options align=power
  52. #elif PRAGMA_STRUCT_PACKPUSH
  53.     #pragma pack(push, 2)
  54. #elif PRAGMA_STRUCT_PACK
  55.     #pragma pack(2)
  56. #endif
  57.  
  58. #if PRAGMA_ENUM_ALWAYSINT
  59.     #pragma enumsalwaysint on
  60. #elif PRAGMA_ENUM_OPTIONS
  61.     #pragma option enum=int
  62. #elif PRAGMA_ENUM_PACK
  63.     #if __option(pack_enums)
  64.         #define PRAGMA_ENUM_PACK__DRAWSPROCKET__
  65.     #endif
  66.     #pragma options(!pack_enums)
  67. #endif
  68.  
  69. #if TARGET_RT_MAC_CFM
  70. /*
  71. ********************************************************************************
  72. ** error/warning codes
  73. ********************************************************************************
  74. */
  75.  
  76. enum {
  77.     kDSpNotInitializedErr        = -30440L,
  78.     kDSpSystemSWTooOldErr        = -30441L,
  79.     kDSpInvalidContextErr        = -30442L,
  80.     kDSpInvalidAttributesErr    = -30443L,
  81.     kDSpContextAlreadyReservedErr = -30444L,
  82.     kDSpContextNotReservedErr    = -30445L,
  83.     kDSpContextNotFoundErr        = -30446L,
  84.     kDSpFrameRateNotReadyErr    = -30447L,
  85.     kDSpConfirmSwitchWarning    = -30448L,
  86.     kDSpInternalErr                = -30449L,
  87.     kDSpStereoContextErr        = -30450L
  88. };
  89.  
  90. /*
  91. ********************************************************************************
  92. ** constants
  93. ********************************************************************************
  94. */
  95.  
  96. enum DSpDepthMask {
  97.     kDSpDepthMask_1                = 1 << 0,
  98.     kDSpDepthMask_2                = 1 << 1,
  99.     kDSpDepthMask_4                = 1 << 2,
  100.     kDSpDepthMask_8                = 1 << 3,
  101.     kDSpDepthMask_16            = 1 << 4,
  102.     kDSpDepthMask_32            = 1 << 5,
  103.     kDSpDepthMask_All            = -1L
  104. };
  105. typedef enum DSpDepthMask DSpDepthMask;
  106.  
  107.  
  108. enum DSpColorNeeds {
  109.     kDSpColorNeeds_DontCare        = 0L,
  110.     kDSpColorNeeds_Request        = 1L,
  111.     kDSpColorNeeds_Require        = 2L
  112. };
  113. typedef enum DSpColorNeeds DSpColorNeeds;
  114.  
  115.  
  116. enum DSpContextState {
  117.     kDSpContextState_Active        = 0L,
  118.     kDSpContextState_Paused        = 1L,
  119.     kDSpContextState_Inactive    = 2L
  120. };
  121. typedef enum DSpContextState DSpContextState;
  122.  
  123. /* kDSpContextOption_QD3DAccel not yet implemented */
  124.  
  125. enum DSpContextOption {
  126.                                                                 /*    kDSpContextOption_QD3DAccel        = 1<<0,*/
  127.     kDSpContextOption_PageFlip    = 1 << 1,
  128.     kDSpContextOption_DontSyncVBL = 1 << 2,
  129.     kDSpContextOption_Stereoscopic = 1 << 3
  130. };
  131. typedef enum DSpContextOption DSpContextOption;
  132.  
  133.  
  134. enum DSpAltBufferOption {
  135.     kDSpAltBufferOption_RowBytesEqualsWidth = 1 << 0
  136. };
  137. typedef enum DSpAltBufferOption DSpAltBufferOption;
  138.  
  139.  
  140. enum DSpBufferKind {
  141.     kDSpBufferKind_Normal        = 0,
  142.     kDSpBufferKind_LeftEye        = 0,
  143.     kDSpBufferKind_RightEye        = 1
  144. };
  145. typedef enum DSpBufferKind DSpBufferKind;
  146.  
  147.  
  148. enum DSpBlitMode {
  149.     kDSpBlitMode_SrcKey            = 1 << 0,
  150.     kDSpBlitMode_DstKey            = 1 << 1,
  151.     kDSpBlitMode_Interpolation    = 1 << 2
  152. };
  153. typedef enum DSpBlitMode DSpBlitMode;
  154.  
  155. /*
  156. ********************************************************************************
  157. ** data types
  158. ********************************************************************************
  159. */
  160. typedef struct OpaqueDSpAltBufferReference*  DSpAltBufferReference;
  161. typedef struct OpaqueDSpContextReference*  DSpContextReference;
  162. #define kDSpEveryContext ((DSpContextReference)NULL)
  163. typedef CALLBACK_API_C( Boolean , DSpEventProcPtr )(EventRecord *inEvent);
  164. typedef CALLBACK_API_C( Boolean , DSpCallbackProcPtr )(DSpContextReference inContext, void *inRefCon);
  165.  
  166. struct DSpContextAttributes {
  167.     Fixed                             frequency;
  168.     UInt32                             displayWidth;
  169.     UInt32                             displayHeight;
  170.     UInt32                             reserved1;
  171.     UInt32                             reserved2;
  172.     UInt32                             colorNeeds;
  173.     CTabHandle                         colorTable;
  174.     OptionBits                         contextOptions;
  175.     OptionBits                         backBufferDepthMask;
  176.     OptionBits                         displayDepthMask;
  177.     UInt32                             backBufferBestDepth;
  178.     UInt32                             displayBestDepth;
  179.     UInt32                             pageCount;
  180.     char                             filler[3];
  181.     Boolean                         gameMustConfirmSwitch;
  182.     UInt32                             reserved3[4];
  183. };
  184. typedef struct DSpContextAttributes        DSpContextAttributes;
  185. typedef DSpContextAttributes *            DSpContextAttributesPtr;
  186.  
  187. struct DSpAltBufferAttributes {
  188.     UInt32                             width;
  189.     UInt32                             height;
  190.     DSpAltBufferOption                 options;
  191.     UInt32                             reserved[4];
  192. };
  193. typedef struct DSpAltBufferAttributes    DSpAltBufferAttributes;
  194. typedef struct DSpBlitInfo                 DSpBlitInfo;
  195. typedef CALLBACK_API_C( void , DSpBlitDoneProc )(DSpBlitInfo *info);
  196.  
  197. struct DSpBlitInfo {
  198.     Boolean                         completionFlag;
  199.     char                             filler[3];
  200.     DSpBlitDoneProc                 completionProc;
  201.     DSpContextReference             srcContext;
  202.     CGrafPtr                         srcBuffer;
  203.     Rect                             srcRect;
  204.     UInt32                             srcKey;
  205.  
  206.     DSpContextReference             dstContext;
  207.     CGrafPtr                         dstBuffer;
  208.     Rect                             dstRect;
  209.     UInt32                             dstKey;
  210.  
  211.     DSpBlitMode                     mode;
  212.     UInt32                             reserved[4];
  213. };
  214.  
  215.  
  216. typedef DSpBlitInfo *                    DSpBlitInfoPtr;
  217. /*
  218. ********************************************************************************
  219. ** function prototypes
  220. ********************************************************************************
  221. */
  222. /*
  223. ** global operations
  224. */
  225. EXTERN_API_C( OSStatus )
  226. DSpStartup                        (void);
  227.  
  228. EXTERN_API_C( OSStatus )
  229. DSpShutdown                        (void);
  230.  
  231. EXTERN_API_C( OSStatus )
  232. DSpGetFirstContext                (DisplayIDType             inDisplayID,
  233.                                  DSpContextReference *    outContext);
  234.  
  235. EXTERN_API_C( OSStatus )
  236. DSpGetNextContext                (DSpContextReference     inCurrentContext,
  237.                                  DSpContextReference *    outContext);
  238.  
  239. EXTERN_API_C( OSStatus )
  240. DSpFindBestContext                (DSpContextAttributesPtr  inDesiredAttributes,
  241.                                  DSpContextReference *    outContext);
  242.  
  243. EXTERN_API_C( OSStatus )
  244. DSpCanUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  245.                                  Boolean *                outUserCanSelectContext);
  246.  
  247. EXTERN_API_C( OSStatus )
  248. DSpUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  249.                                  DisplayIDType             inDialogDisplayLocation,
  250.                                  DSpEventProcPtr         inEventProc,
  251.                                  DSpContextReference *    outContext);
  252.  
  253. EXTERN_API_C( OSStatus )
  254. DSpProcessEvent                    (EventRecord *            inEvent,
  255.                                  Boolean *                outEventWasProcessed);
  256.  
  257. EXTERN_API_C( OSStatus )
  258. DSpSetBlankingColor                (const RGBColor *        inRGBColor);
  259.  
  260. EXTERN_API_C( OSStatus )
  261. DSpSetDebugMode                    (Boolean                 inDebugMode);
  262.  
  263. EXTERN_API_C( OSStatus )
  264. DSpFindContextFromPoint            (Point                     inGlobalPoint,
  265.                                  DSpContextReference *    outContext);
  266.  
  267. EXTERN_API_C( OSStatus )
  268. DSpGetMouse                        (Point *                outGlobalPoint);
  269.  
  270. /*
  271. ** alternate buffer operations
  272. */
  273. EXTERN_API_C( OSStatus )
  274. DSpAltBuffer_New                (DSpContextReference     inContext,
  275.                                  Boolean                 inVRAMBuffer,
  276.                                  DSpAltBufferAttributes * inAttributes,
  277.                                  DSpAltBufferReference * outAltBuffer);
  278.  
  279. EXTERN_API_C( OSStatus )
  280. DSpAltBuffer_Dispose            (DSpAltBufferReference     inAltBuffer);
  281.  
  282. EXTERN_API_C( OSStatus )
  283. DSpAltBuffer_InvalRect            (DSpAltBufferReference     inAltBuffer,
  284.                                  const Rect *            inInvalidRect);
  285.  
  286. EXTERN_API_C( OSStatus )
  287. DSpAltBuffer_GetCGrafPtr        (DSpAltBufferReference     inAltBuffer,
  288.                                  DSpBufferKind             inBufferKind,
  289.                                  CGrafPtr *                outCGrafPtr,
  290.                                  GDHandle *                outGDevice);
  291.  
  292. /*
  293. ** context operations
  294. */
  295. /* general */
  296. EXTERN_API_C( OSStatus )
  297. DSpContext_GetAttributes        (DSpContextReference     inContext,
  298.                                  DSpContextAttributesPtr  outAttributes);
  299.  
  300. EXTERN_API_C( OSStatus )
  301. DSpContext_Reserve                (DSpContextReference     inContext,
  302.                                  DSpContextAttributesPtr  inDesiredAttributes);
  303.  
  304. EXTERN_API_C( OSStatus )
  305. DSpContext_Release                (DSpContextReference     inContext);
  306.  
  307. EXTERN_API_C( OSStatus )
  308. DSpContext_GetDisplayID            (DSpContextReference     inContext,
  309.                                  DisplayIDType *        outDisplayID);
  310.  
  311. EXTERN_API_C( OSStatus )
  312. DSpContext_GlobalToLocal        (DSpContextReference     inContext,
  313.                                  Point *                ioPoint);
  314.  
  315. EXTERN_API_C( OSStatus )
  316. DSpContext_LocalToGlobal        (DSpContextReference     inContext,
  317.                                  Point *                ioPoint);
  318.  
  319. EXTERN_API_C( OSStatus )
  320. DSpContext_SetVBLProc            (DSpContextReference     inContext,
  321.                                  DSpCallbackProcPtr     inProcPtr,
  322.                                  void *                    inRefCon);
  323.  
  324. EXTERN_API_C( OSStatus )
  325. DSpContext_GetFlattenedSize        (DSpContextReference     inContext,
  326.                                  UInt32 *                outFlatContextSize);
  327.  
  328. EXTERN_API_C( OSStatus )
  329. DSpContext_Flatten                (DSpContextReference     inContext,
  330.                                  void *                    outFlatContext);
  331.  
  332. EXTERN_API_C( OSStatus )
  333. DSpContext_Restore                (void *                    inFlatContext,
  334.                                  DSpContextReference *    outRestoredContext);
  335.  
  336. EXTERN_API_C( OSStatus )
  337. DSpContext_GetMonitorFrequency    (DSpContextReference     inContext,
  338.                                  Fixed *                outFrequency);
  339.  
  340. EXTERN_API_C( OSStatus )
  341. DSpContext_SetMaxFrameRate        (DSpContextReference     inContext,
  342.                                  UInt32                 inMaxFPS);
  343.  
  344. EXTERN_API_C( OSStatus )
  345. DSpContext_GetMaxFrameRate        (DSpContextReference     inContext,
  346.                                  UInt32 *                outMaxFPS);
  347.  
  348. EXTERN_API_C( OSStatus )
  349. DSpContext_SetState                (DSpContextReference     inContext,
  350.                                  DSpContextState         inState);
  351.  
  352. EXTERN_API_C( OSStatus )
  353. DSpContext_GetState                (DSpContextReference     inContext,
  354.                                  DSpContextState *        outState);
  355.  
  356. EXTERN_API_C( OSStatus )
  357. DSpContext_IsBusy                (DSpContextReference     inContext,
  358.                                  Boolean *                outBusyFlag);
  359.  
  360. /* dirty rectangles */
  361. EXTERN_API_C( OSStatus )
  362. DSpContext_SetDirtyRectGridSize    (DSpContextReference     inContext,
  363.                                  UInt32                 inCellPixelWidth,
  364.                                  UInt32                 inCellPixelHeight);
  365.  
  366. EXTERN_API_C( OSStatus )
  367. DSpContext_GetDirtyRectGridSize    (DSpContextReference     inContext,
  368.                                  UInt32 *                outCellPixelWidth,
  369.                                  UInt32 *                outCellPixelHeight);
  370.  
  371. EXTERN_API_C( OSStatus )
  372. DSpContext_GetDirtyRectGridUnits (DSpContextReference     inContext,
  373.                                  UInt32 *                outCellPixelWidth,
  374.                                  UInt32 *                outCellPixelHeight);
  375.  
  376. EXTERN_API_C( OSStatus )
  377. DSpContext_InvalBackBufferRect    (DSpContextReference     inContext,
  378.                                  const Rect *            inRect);
  379.  
  380. /* underlays */
  381. EXTERN_API_C( OSStatus )
  382. DSpContext_SetUnderlayAltBuffer    (DSpContextReference     inContext,
  383.                                  DSpAltBufferReference     inNewUnderlay);
  384.  
  385. EXTERN_API_C( OSStatus )
  386. DSpContext_GetUnderlayAltBuffer    (DSpContextReference     inContext,
  387.                                  DSpAltBufferReference * outUnderlay);
  388.  
  389. /* gamma */
  390. EXTERN_API_C( OSStatus )
  391. DSpContext_FadeGammaOut            (DSpContextReference     inContext,
  392.                                  RGBColor *                inZeroIntensityColor);
  393.  
  394. EXTERN_API_C( OSStatus )
  395. DSpContext_FadeGammaIn            (DSpContextReference     inContext,
  396.                                  RGBColor *                inZeroIntensityColor);
  397.  
  398. EXTERN_API_C( OSStatus )
  399. DSpContext_FadeGamma            (DSpContextReference     inContext,
  400.                                  SInt32                 inPercentOfOriginalIntensity,
  401.                                  RGBColor *                inZeroIntensityColor);
  402.  
  403. /* buffering */
  404. EXTERN_API_C( OSStatus )
  405. DSpContext_SwapBuffers            (DSpContextReference     inContext,
  406.                                  DSpCallbackProcPtr     inBusyProc,
  407.                                  void *                    inUserRefCon);
  408.  
  409. EXTERN_API_C( OSStatus )
  410. DSpContext_GetBackBuffer        (DSpContextReference     inContext,
  411.                                  DSpBufferKind             inBufferKind,
  412.                                  CGrafPtr *                outBackBuffer);
  413.  
  414. EXTERN_API_C( OSStatus )
  415. DSpContext_GetFrontBuffer        (DSpContextReference     inContext,
  416.                                  CGrafPtr *                outFrontBuffer);
  417.  
  418. /* clut operations */
  419. EXTERN_API_C( OSStatus )
  420. DSpContext_SetCLUTEntries        (DSpContextReference     inContext,
  421.                                  const ColorSpec *        inEntries,
  422.                                  UInt16                 inStartingEntry,
  423.                                  UInt16                 inLastEntry);
  424.  
  425. EXTERN_API_C( OSStatus )
  426. DSpContext_GetCLUTEntries        (DSpContextReference     inContext,
  427.                                  ColorSpec *            outEntries,
  428.                                  UInt16                 inStartingEntry,
  429.                                  UInt16                 inLastEntry);
  430.  
  431. /* blit operations */
  432. EXTERN_API_C( OSStatus )
  433. DSpBlit_Faster                    (DSpBlitInfoPtr         inBlitInfo,
  434.                                  Boolean                 inAsyncFlag);
  435.  
  436. EXTERN_API_C( OSStatus )
  437. DSpBlit_Fastest                    (DSpBlitInfoPtr         inBlitInfo,
  438.                                  Boolean                 inAsyncFlag);
  439.  
  440. #endif  /* TARGET_RT_MAC_CFM */
  441.  
  442.  
  443. #if PRAGMA_ENUM_ALWAYSINT
  444.     #pragma enumsalwaysint reset
  445. #elif PRAGMA_ENUM_OPTIONS
  446.     #pragma option enum=reset
  447. #elif defined(PRAGMA_ENUM_PACK__DRAWSPROCKET__)
  448.     #pragma options(pack_enums)
  449. #endif
  450.  
  451. #if PRAGMA_STRUCT_ALIGN
  452.     #pragma options align=reset
  453. #elif PRAGMA_STRUCT_PACKPUSH
  454.     #pragma pack(pop)
  455. #elif PRAGMA_STRUCT_PACK
  456.     #pragma pack()
  457. #endif
  458.  
  459. #ifdef PRAGMA_IMPORT_OFF
  460. #pragma import off
  461. #elif PRAGMA_IMPORT
  462. #pragma import reset
  463. #endif
  464.  
  465. #ifdef __cplusplus
  466. }
  467. #endif
  468.  
  469. #endif /* __DRAWSPROCKET__ */
  470.  
  471.